package Day02;

public class exercise {
    public static void main(String[] args) {
        //声明一个变量，一次声明多个变量。
        int a=0;
        int b=1,c=2,d=3;
        //声明变量直接初始化，先声明变量，而后再给变量初始化。
        int e;
        e=4;
        //声明整型变量g，声明另一个整型变量h并赋值为g+10，输出变量h的值。
        int g=5;
        int h=g+10;
        System.out.println(h);
        //在g本身基础之上增10，输出变量g的值。
        g=g+10;
        System.out.println(g);
        //声明一些正确的和错误的变量名。
        //变量命名可以用字母、数字、_、$，但是不能以数字开头、特殊符号等。
        int m;
        int M;
        int a0;
        int _;
        int $;
        //int 1a;//不能以数字开头。
        //int a*b;//不能包含特殊符号。

        //声明初始化两个以上整数变量，并且输出两个整数变量的除法结果
        int a1=10;
        int a2=20;
        System.out.println(a1/a2);
        //声明两个很大的变量，然后相加，输出运算结果，测试运算溢出现象
        int a3=2147483647;
        int a4=a3+1;
        System.out.println(a4);

        //声明初始化两个以上的长整型变量
        long b1=25;
        long b2=10000000000L;
        //声明变量存储几个较大数据的运算，演示：若有可能溢出建议将L设计在第1个数字后。
        long b3=1000000000*2*10L;
        System.out.println(b3);
        long b4=1000000000*3*10L;//不是300亿
        System.out.println(b4);
        long b5=1000000000L*3*10;//300亿
        System.out.println(b5);

        //声明初始化两个以上的浮点型变量
        double c1=31.1415;
        double c2=54.96;
        float c3=78.9098F;
        //声明几个浮点型变量并将它们做数学操作，演示double运算的舍入误差问题
        double c4=3,c5=2.9;
        System.out.println(c4-c5);
        double c6=6,c7=5.9;
        System.out.println(c6-c7);
        double c8=6,c9=1.9;
        System.out.println(c8-c9);

        //声明初始化两个以上的布尔型变量
        boolean d1=true;
        boolean d2=false;

        //声明初始化五个以上的字符型变量
        char e1='1';
        char e2='a';
        char e3='女';
        char e4=' ';
        char e5='\'';// '
        char e6='\\';// \
        //char e7='01'//不能有两个字符

        //声明几个变量，演示自动类型转换和强制类型转换的语法
        int f1=5;
        long f2=5;//自动转换
        int f3=(int)f2;//强制类型转换
        double f4=3.14;
        long f5=(long)f4;
        System.out.println(f5);
        //声明一个较大类型的长整型变量，演示强转可能会发生的溢出问题
        long f6=10000000000L;
        int f7=(int)f6;
        System.out.println(f7);
        //声明一个较大精度的浮点型变量，演示强转可能会发生的丢失精度问题
        double f8=34.567909;
        int f9=(int)f8;
        System.out.println(f9);

        //声明两个byte型变量b1和b2，并赋值为直接量
        byte g1=5;
        byte g2=6;
        //声明一个byte型变量，并赋值为b1与b2的和
        byte g3=(byte)(g1+g2);
        System.out.println(g3);


        System.out.println('2');
        System.out.println(2+'2');
        System.out.println('你'+'我');
        System.out.println("2"+'2');
        System.out.println('2'+'2');

        int h1='他';
        System.out.println(h1);
        char h2=89;
        System.out.println(h2);
    }
}
